package desgin.pattern.construtor.singleton;

/**
 * 
 * @Type LazyInitializationHolder
 * @Desc 　Lazy initialization holder class模式 什么是类级内部类？
 *       　　简单点说，类级内部类指的是，有static修饰的成员式内部类。如果没有static修饰的成员式内部类被称为对象级内部类。
 *       　　类级内部类相当于其外部类的static成分
 *       ，它的对象与外部类对象间不存在依赖关系，因此可直接创建。而对象级内部类的实例，是绑定在外部对象实例中的。
 *       　　类级内部类中，可以定义静态的方法。在静态方法中只能够引用外部类中的静态成员方法或者成员变量。
 *       　　类级内部类相当于其外部类的成员，只有在第一次被使用的时候才被会装载。
 * 
 *       单例模式的核心是 实现 延迟加载和线程安全
 * 
 *       类级的内部类，也就是静态的成员式内部类，该内部类的实例与外部类的实例 没有绑定关系，<br/>
 *       而且只有被调用到时才会装载，从而实现了延迟加载<br/>
 *       这个模式的优势在于，getInstance方法并没有被同步，并且只是执行一个域的访问，因此延迟初始化并没有增加任何访问成本。<br/>
 * @author shuai.zuo
 * @date 2015年3月6日
 * @Version V1.0
 */
public class LazyInitializationHolder {
    /**
     * 静态初始化器，由JVM来保证线程安全
     */
    private LazyInitializationHolder() {
    }

    private static class LazyInitializationHolderInstance {
        public static LazyInitializationHolder instance = new LazyInitializationHolder();
    }

    public static LazyInitializationHolder getInstance() {
        return LazyInitializationHolderInstance.instance;
    }
}
